#pragma once

#include "IPhyShape.h"
//#include "NewtonEngine.h"
#include "Newton.h"
/**
==============================
Newtons implementation of Shapes
==============================
*/
class NewtonShape : public IPhyShape
{
public:
    NewtonShape(void);
    /** Init the shape */
    virtual void Init();
    /** Set Mass */
    virtual void  SetMass( float m );
    //virtual float GetMass();
    /** Set Inertia */
    virtual void SetInertia( const MVector3f &I );
    /** Set the transformation mat */
    virtual void SetTransMatrix( const MMatrix4x4f &m );
    virtual MMatrix4x4f GetTransMatrix();
    /** Set Angular Velocity */
    virtual void SetAngularVel( const MVector3f &v );
    /** Get type of shape */
    virtual Shape_t GetType() { return SF_UNKNOWN; };
protected:
    NewtonBody*         m_ribidBodyBox;     // actual body of the box
    NewtonWorld*        m_world;            // newton's hook
    MVector3f           m_vInertia;
    MVector3f           m_vAngVel;
    MMatrix4x4f         m_mTrans;
    float               m_fMass;
    
public:
    virtual ~NewtonShape(void);
};


/**
====================================
Box Shape
====================================
*/
class NewPhyBox : public NewtonShape
{
public:
    NewPhyBox(NewtonWorld* w);
    /** Init the shape */
    virtual void Init();
    /** Get type of shape */
    Shape_t GetType() { return SF_BOX; };

    float   Width;
    float   Height;
    float   Depth;

private:
    

public:
    virtual ~NewPhyBox(void) {};

};